﻿/*
SINACOR - BMF&Bovespa
Arquivo: ValidaExclusaoTipoDescontoDiferenciado.cs
Criado em: 18-nov-2009 16:06:09
Arquiteto Responsável: WGeneroso.prg
*/
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using Sinacor.Infra.Service.Validation;
using Sinacor.Infra.Service.Common;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;
using Sinacor.Infra.Service.Validation.BusinessRules;
using Sinacor.Infra.Common.Validation;

namespace Sinacor.Servico.Bovespa.Corretagem.BusinessLogic.BusinessRuleValidation {

	/// <summary>
	/// Validador para exclusão de tipo de desconto diferenciado
	/// </summary>

    //TODO: R2 - Verificar se BaseBusinessRuleValidation nao deveria ser do tipo BusinessEntity.Parameter.FiltroTipoDescontoDiferenciadoChave 
	//public class ValidaExclusaoTipoDescontoDiferenciado : BaseBusinessRuleValidation<BusinessEntity.TipoDescontoDiferenciado>, IBusinessRuleValidation {
    public class ValidaExclusaoTipoDescontoDiferenciado : BaseBusinessRuleValidation<BusinessEntity.Parameter.FiltroTipoDescontoDiferenciadoChave>, IBusinessRuleValidation
    {

		#region Atributos 
		private int _erroObjetoNulo = 109574;
		private int _existeDependencias = 109575; 
		#endregion Atributos

		#region Propriedades 
		public int ErroObjetoNulo{
			get
			{
				return _erroObjetoNulo;
			}
			set
			{
				_erroObjetoNulo = value;
			}
		}
		public int ExisteDependencias{
			get
			{
				return _existeDependencias;
			}
			set
			{
				_existeDependencias = value;
			}
		} 
		#endregion Propriedades

		#region Construtores 
		public ValidaExclusaoTipoDescontoDiferenciado(){} 
		#endregion Construtores

		#region Métodos 
		public List<ValidationError> GetErrors(){
            return base.ErrorsList;	
		}
		public void Validate(){
			
            if (base.EntityToValidate != null)
            {
                BusinessEntity.TipoDescontoDiferenciado tipoDescontoDiferenciado = new BusinessEntity.TipoDescontoDiferenciado();
                tipoDescontoDiferenciado.Codigo = base.EntityToValidate.Codigo;

                if (new BusinessLogic.DescontoDiferenciado().ConsultarDescontosDiferenciados(
                    new BusinessEntity.Parameter.FiltroDescontoDiferenciado
                    {
                        TipoDesconto = tipoDescontoDiferenciado
                    }).Count > 0)
                {
                    base.AddValidationError(ExisteDependencias);
                }
            }
            else
            {
                base.AddValidationError(ErroObjetoNulo);
            }
		} 

		#endregion

	}

}